/*
*abstract:sigsuspend 测试
*author:张玉行
*email:zhangyuhang2009@gmail.com
*date:2011.10.12
*/
#include <stdio.h>
#include <signal.h>

void sighandler(int signum,siginfo_t* siginfo,void* arg){
	printf("haha%d\n",signum);
	sleep(10);
	printf("over\n");
}

int main( int argc,char* argv[]){
	if(2 != argc){
		printf("请选择信号处理期间是否屏蔽所有能屏蔽的信号\n");
		printf("正确格式:%s 1或者其他或者不写  1为屏蔽其他为不屏蔽 \n",argv[0]);
		return 0;
	}
	struct sigaction act;
	act.sa_handler = sighandler;
	if(1 == atoi(argv[1]) ){
		sigfillset(&act.sa_mask);//屏蔽所有的信号除了SIGSTOP 和 SIGKILL
	}else{
		sigemptyset(&act.sa_mask);// 不屏蔽任何信号
	}
	act.sa_flags = SA_SIGINFO;
	sigaction(SIGTERM,&act,NULL);
	sigset_t mask;
	sigfillset(&mask);
	sigdelset(&mask,SIGTERM);
	sigsuspend(&mask);
	printf("main\n");
}
